package com.example.demo.service;

import com.example.demo.bean.Product;
import com.example.demo.JpaRepository.ProductDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Date;
import java.util.List;

@Service
public class ProductService {
    @Autowired
    private ProductDao productDao;

    // 定义图片上传的存储目录
    private final String UPLOAD_FOLDER = "C:/Users/chendongfeng/Desktop/img/";

    // 修改返回类型为Product
    public Product saveImage(MultipartFile file,String name,Integer price) throws IOException {
        // 创建File对象表示上传目录
        File uploadDir = new File(UPLOAD_FOLDER);

        // 如果目录不存在，则创建它(包括所有不存在的父目录)
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();
        }

        // 获取上传文件的字节数组
        byte[] bytes = file.getBytes();

        // 创建目标路径对象(目录+原始文件名)
        Path path = Paths.get(UPLOAD_FOLDER + file.getOriginalFilename());

        // 将文件字节写入目标路径，如果目标文件不存在，会自动创建新文件（但不会自动创建目录，目录必须已存在）
        Files.write(path, bytes);

        // 创建Product实体对象
        Product product = new Product();
        //
        product.setPrice(price);
        // 设置图片名称(原始文件名)
        product.setName(name);

        // 设置上传时间为当前时间
        product.setUploadTime(new Date());
        //设置地址

        product.setPath("/uploads/" + file.getOriginalFilename());
        //修改值或插入值
        return productDao.save(product);
    }

    public List<Product> getImgAll() {
        return productDao.findAll();
    }
    public Product getProductById(Long id) {
        return productDao.findById(id).orElse(null);
    }
    //修改产品
    public Product updateProduct(Long id, Product productUpdate) {
        //.orElse(null);当 findById(id) 查不到结果时，返回 null 而不是抛出异常
        Product product = productDao.findById(id).orElse(null);
        if (product != null) {
            if (productUpdate.getName() != null) {
                product.setName(productUpdate.getName());
            }
            if (productUpdate.getOverview() != null) {
                product.setOverview(productUpdate.getOverview());
            }
            if (productUpdate.getPrice() != null) {
                product.setPrice(productUpdate.getPrice());
            }
            // 可以添加其他需要更新的字段
            return productDao.save(product);
        }
        return null;
    }
    //删除对应产品
    public Product deleteProduct(Long id) {
        Product product = productDao.findById(id).orElse(null);
        if (product != null) {
            productDao.delete(product);  // 执行删除
        }
        return product;  // 返回被删除的对象（可能为null）
    }
}